package com.javatest;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author LL
 * 题目：一个数如果恰好等于它的因子之和，这个数就称为”完数”。
 * 例如6=1＋2＋3.编程找出1000以内的所有完数。
 * @create 2020-12-10 11:56
 */
public class Subject09 {

    public static void main(String[] args) {
        decompose(500000);
    }

    //分解质因数
    public static void decompose(Integer num){
        List<Integer> list = new ArrayList<>();
        list.add(1);
        for (int i = 1; i <= num; i++) {
            Integer sum = 0;
            String str = "";
            for (int j = 1; j < i; j++) {
                if (i%j == 0) {
                    if (j == 1) {
                        sum+=j;
                        str = str + j;
                    }else{
                        sum+=j;
                        str = str + " " +j;
                    }
                }
            }
            if (sum == i) {
                System.out.println(i+"是完数，它的因子包括："+str);
            }
        }
    }
}
